import pandas as pd

# 读取数据并指定数据类型
dtype_workbook1 = {
    '费用使用方': str,
    '门店名称': 'object',
    '地区': 'object',
    '门店性质（直营/加盟）': 'object',
    '核算组织代码': 'object',
    '成本中心代码': 'object',
    '所属子公司': 'object'
}
workbook1 = pd.read_excel(
    'D://laiyifen//工作簿1.xlsx',
    sheet_name='Sheet1',
    dtype=dtype_workbook1
)

dtype_store_info = {'费用使用方': str}
store_info = pd.read_excel(
    'D://laiyifen//2.xlsx',
    sheet_name='Sheet1',
    dtype=dtype_store_info
)

# 构建字典索引
store_info_dict = store_info.set_index('费用使用方').to_dict(orient='index')

# 填充数据
for index, row in workbook1.iterrows():
    sap_code = str(row['费用使用方']) if pd.notnull(row['费用使用方']) else None
    if sap_code in store_info_dict:
        info = store_info_dict[sap_code]
        workbook1.at[index, '门店名称'] = info.get('门店名称')
        workbook1.at[index, '地区'] = info.get('地区')
        workbook1.at[index, '门店性质（直营/加盟）'] = info.get('门店性质（直营/加盟）')
        workbook1.at[index, '核算组织代码'] = info.get('核算组织代码')
        workbook1.at[index, '成本中心代码'] = info.get('成本中心代码')

# 填充所属子公司
for index, row in workbook1.iterrows():
    sap_code = str(row['费用使用方']) if pd.notnull(row['费用使用方']) else None
    if sap_code in store_info_dict:
        store_nature = row['门店性质（直营/加盟）']
        if store_nature == '直营':
            workbook1.at[index, '所属子公司'] = store_info_dict[sap_code].get('所属子公司-直营')
        elif store_nature == '加盟':
            workbook1.at[index, '所属子公司'] = store_info_dict[sap_code].get('所属子公司-加盟')

# 填充数量列
workbook1['数量'] = 1

# 设置单价和总计列
def set_price(row):
    if row['费用名称'] == '开闭店服务':
        return '295/店/次', 295
    elif row['费用名称'] == 'A类现场':
        return '216元/次', 216
    elif row['费用名称'] == '科技A类现场':
        return '216元/次', 216
    elif row['费用名称'] == 'B类现场':
        return '280元/次', 280
    elif row['费用名称'] == '科技B类现场':
        return '280元/次', 280
    else:
        return None, None

workbook1[['单价（元）', '总计（元）']] = workbook1.apply(set_price, axis=1, result_type='expand')

# 填充服务商和服务商代码列
workbook1['服务商'] = '联想'
workbook1['服务商代码'] = None

# 保存并检查缺失
workbook1.to_excel('D://laiyifen//1.xlsx', index=False)
print("数据填充完成！")

# 检查未匹配的费用使用方
missing = workbook1[workbook1['门店名称'].isna()]
if not missing.empty:
    print("以下费用使用方未匹配到门店信息：")
    print(missing['费用使用方'].unique())